Synchronous delivery of media content in a collaborative environment

ABSTRACT

An apparatus and method for facilitating a synchronous display of a time-based media object (e.g., a video or audio file) with a remote device is provided. In one example, the apparatus comprises control logic for controlling the display of a media object in response to a user entered command with a first device, and communication logic for causing communication of the user entered command (e.g., play, pause, skip, etc.) and a metric (e.g., time or frame reference) associated with the media object to a second device for synchronizing the display of the media object with the first and second devices. The first and second devices may communicate via peer-to-peer communications, for example, in a collaborative or social application such as an IM application. Further, the apparatus may include various devices such as a personal computer, mobile phone device and/or mobile personal entertainment device, DVR, or the like.

CROSS-REFERENCE TO RELATED APPLICATIONS

This Application is a continuation (and claims the benefit of priorityunder 35 U.S.C. § 120) of U.S. application Ser. No. 16/408,785, filedMay 10, 2019, and entitled “SYNCHRONOUS DELIVERY OF MEDIA CONTENT IN ACOLLABORATIVE ENVIRONMENT” which is a continuation of U.S. applicationSer. No. 14/966,544, filed Dec. 11, 2015, and entitled “SYNCHRONOUSDELIVERY OF MEDIA CONTENT IN A COLLABORATIVE ENVIRONMENT”, now U.S. Pat.No. 10,333,999, which is a continuation of U.S. application Ser. No.11/710,026, filed Feb. 22, 2007, now U.S. Pat. No. 9,253,222, andentitled “SYNCHRONOUS DELIVERY OF MEDIA CONTENT IN A COLLABORATIVEENVIRONMENT.” The disclosures of the prior Applications are consideredpart of and are incorporated by reference in the disclosure of thisApplication.

BACKGROUND Field

The present invention relates generally to systems and methods for thedisplay and control of time-based media content such as video and/oraudio content via a network, such as the Internet or an intranet, and inparticular, to an interface and method for synchronously displaying andcontrolling time-based media content in a collaborative environment

Description of Related Art

Sharing time-based media content (e.g., video or audio files) within asocial or collaborative environment such as an instant messagingenvironment can be arduous. For instance, typically, users may sharereferences (e.g., send links/URLs) to media objects with each otherwithin a conversation window of an instant messaging application (orother social or collaborative environment). These actions, however, dolittle for synchronizing the display and control of the media object forconversational feedback as each user independently controls the display(e.g., stops, pauses, etc.). For example, when sharing a media object,it is typically desirable to converse and share reactions in more orless real time with the other users. When a video URL is sent during aninstant messaging conversation, however, the sender and receiver oftenhave difficulty in conversing efficiently regarding the media objectbecause of a lack of synchronization of the display of the media object,leading to questions such as “is it playing?” or “let me know when youget past the part with the mountains?”

Additionally, controlling the display of time-based media content withina social or collaborative environment presents difficulties for use. Forexample, even if users coordinate the initiation of playing a mediaobject, controlling the display of the media object by one user device,e.g., pausing or rewinding a shared video by one user, may result in theshared video falling out of synchronization with the other user devices.

Accordingly, there is a desire to synchronously deliver and sharetime-based media content, such as audio and/or video, among a communityof users. In addition, there is a desire to permit real-time control ofsuch media by more than one member of the community in a synchronousmanner.

SUMMARY

According to one aspect and one example of the present invention, asystem and apparatus for facilitating a synchronous display of atime-based media object (e.g., a video or audio file) with a remotedevice is provided. In one example, the apparatus comprises controllogic for controlling the display of a media object in response to auser entered command with a first device, and communication logic forcausing communication of the user entered command and a metric (e.g.,time or frame reference) associated with the media object to a seconddevice for synchronizing the display of the media object with the firstand second devices.

The communication logic may further receive a user entered command andmetric from the second device, the control logic controlling the displayof the media object with the first device based on the received commandand metric. Accordingly, in one example, all user devices sharing themedia object may enter commands for controlling the synchronized displayof the media object with all of the user devices.

In one example, the first and second devices may communicate viapeer-to-peer communications, and further the apparatus may be operableto add synchronization control of the media object to a communicationschannel between two or more user devices. Further, in one example, theapparatus may leverage from existing instant messaging applications(including existing buddy lists, profile information, and so on).

The user entered commands may include play, pause, rewind/forward, seek,and the like. The user entered commands may be communicated in responseto user selections of control buttons associated with a displayedinterface or commands entered into an associated instant messagingconversation. Further, the apparatus may include various devices such asa personal computer, mobile phone device and/or mobile personalentertainment device, DVR, or the like.

Accordingly, in some examples described here, the invention provides aweb-based framework for sharing media objects between a plurality ofusers. Software (or other logic) located on each user's device creates acommunications channel between the user devices to synchronously delivera user-specified media object. Any user may control the playback anddisplay of the media in real-time by, for example, stopping,fast-forwarding, or playing the media object in slow motion. Because themedia is synchronized between the user devices, each user device screendisplays the same segment of the media at the same time. Thus, theinvention may aid collaborative communication through the presentationof synchronized media.

According to another aspect, a method for facilitating synchronousdisplay of a time-based media object with multiple devices. In oneexample the method includes controlling the display of a media object inresponse to a user entered command with a first device, and causingcommunication of the user entered command and a metric associated withthe media object to a second device for synchronizing the display of themedia object with the first and second devices.

According to another aspect, a computer-readable medium comprisinginstructions for facilitating synchronous display of a time-based mediaobject with multiple devices is provided. In one example, theinstruction are for controlling the display of a media object inresponse to a user entered command with a first device, and causingcommunication of the user entered command and a metric associated withthe media object to a second device for synchronizing the display of themedia object with the first and second devices.

The present invention and its various aspects are better understood uponconsideration of the detailed description below in conjunction with theaccompanying drawings and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 schematically illustrates an exemplary system and environment forcommunication between two user devices for sharing media content such astime-based media objects;

FIG. 2A schematically illustrates an exemplary interface for displayingand controlling the synchronous delivery of a time-based media object;

FIG. 2B illustrates a screen-shot of an exemplary interface fordisplaying and controlling a time-based media object in conjunction withan instant messaging application;

FIG. 3 illustrates an exemplary signaling chart between two users forsynchronizing display and control of a media object according to oneexample;

FIGS. 4A and 4B illustrate exemplary methods for synchronizing thedisplay of a media object;

FIG. 5 illustrates an exemplary method for controlling the display of asynchronized media object; and

FIG. 6 illustrates an exemplary computing system that may be employed toimplement processing functionality for various aspects of the invention.

DETAILED DESCRIPTION

The following description is presented to enable a person of ordinaryskill in the art to make and use the invention. Descriptions of specificdevices, techniques, and applications are provided only as examples.Various modifications to the examples described herein will be readilyapparent to those of ordinary skill in the art, and the generalprinciples defined herein may be applied to other examples andapplications without departing from the spirit and scope of theinvention. Thus, the present invention is not intended to be limited tothe examples described herein and shown, but is to be accorded the scopeconsistent with the claims.

According to one aspect of the present invention, an apparatus andinterface are provided for sharing time-based content (e.g., a mediaobject) in a near-synchronous manner. In one example, software (or otherlogic) located on a user device creates a communication channel betweenat least one other user device for the synchronous display and controlof user specified media content. The media content may comprise variousmedia objects such as one or more audio and/or video files accessible(locally or remotely) by at least one of the user devices. In addition,the media content may be provided by a third party.

In one example, each user desiring to share media content accesseslogic, e.g., software, that causes the display of an interface forfacilitating the synchronous delivery of media content between the userdevices. The software may be executed locally on the user's system,e.g., a plug-in or applet downloaded or installed on a user device, orremotely, e.g., a servlet through a web browser. Further, software,located either locally or remotely, facilitates a direct or indirectconnection between users desiring to share media content. For example, adirect IP to IP (peer-to-peer) connection may be created between theuser devices or an indirect connection may be created through a serverthat streams the media content. In both cases, a communicativeconnection is established between the user devices to synchronize thedisplay and control of a shared media object.

A user desiring to share media content may communicate a reference suchas a Uniform Resource Identifier (URI) associated with the media objectto one or more user devices. Based on the URI, each user device mayestablish a synchronous exchange. The software ensures that each user isviewing the same, or substantially the same, segment of the mediacontent at all times. For example, signals may be sent between theuser's indicating the current position of the media object. The positionmay comprise a frame number, a time interval, or any other metriccapable of ensuring synchronization between the users.

After the connection is established between the user devices, each usermay control the media content via an interface displayed at each userdevice. For example, if one user enters a command, e.g., to pause avideo, the command and a time reference will be communicated to theother user device to pause the video at the same position for all userssharing the video. In addition, if one user desires to jump to aparticular segment or position of the media object, the jump and timeare communicated to all users and they are correspondingly directed tothe same segment or position of the media object.

In accordance with some examples, other forms of communications, such asinstant messaging, audio and/or video conferencing, may operate inconjunction with the described interface. In these examples, userssharing media content may control the playback of the media andcollaborate through other forms of communications. Additionally, in oneexample, the invention may be implemented for an instant messagingservice that permits users to type commentary about the media beingshared. Additionally, the user devices may include personal computers(e.g., desktop or laptop computers) as well as other media platformssuch as TVs, mobile phones, Digital Video Recorders (DVRs), or personalmedia players (e.g., MP3 or video players). For example, each user mayshare television-based media content using a DVR device operable forcommunications via a network with other user devices (whether similar ordifferent, such as other DVR devices, personal computers, personal videoplayers, and so on).

For the sake of convenience, at times, videos are used and described asexamples of media content and media objects manipulated by the exemplarydevices, interfaces, and methods; however, those skilled in the art willrecognize that the various examples apply similarly or equally to othermedia objects, subject to appropriate modifications and use of otherfunctions where appropriate (e.g., viewing and controlling a mediaobject may apply to viewing a video file (with or without audio),listening to an audio file, such as a soundtrack, or combinationsthereof).

FIG. 1 schematically illustrates an exemplary system and environment forcommunication between two user devices 110 for sharing media contentsuch as time-based media objects. In particular, FIG. 1 illustrates twouser devices 110, which may communicate with each other for sharingmedia objects, and which may further communicate via network 112 withone or more of a media source 120, web server 122, and an advertisementserver 130.

In one example, user devices 110 each include suitable communicationlogic 102 to interface and communicate with other devices 110 as well asmedia source 120, web server 122, and the like, via network 112 (in partor in whole). For example, communication logic 102 may cause thecommunication of (and/or receive) a command (e.g., a user enteredcommand such as play, pause, or fast-forward) and a metric reference(e.g., time or frame) associated with the shared display of a mediaobject with other devices 110. Additionally, user devices 110 includecontrol logic 104 for controlling the display of media contentassociated therewith in response to such commands (generated by the userdevice itself in response to user input or by other user devices incommunication therewith).

Each user device 110 is further operable to display an interface (see,e.g., interface 200 of FIG. 2A) for displaying and controlling mediaobjects in a synchronous manner, which may be caused by logic executedlocally by user device 110, e.g., via a plug-in or applet downloaded orinstalled on user device 110, or remotely, e.g., by initiating a servletthrough a web browser from web server 122. Further, logic, locatedeither locally or remotely, may facilitate a direct or indirectconnection between user devices 110 (i.e., between Device A and DeviceB) for sharing media content. For example, a direct IP to IP(peer-to-peer) connection may be created between user devices 110 or anindirect connection may be created through a media server, e.g., mediaserver 122, for streaming the media content to user devices 110. Ineither case, a communicative connection is established between userdevices 110 to relay commands and metrics for the synchronous displayand control of a shared media object.

Further, user devices 110 may include logic for receiving and loadingdata conforming to any media format, e.g., still image (e.g., JPEG,TIFF), video (e.g., MPEG, AVI, Flash), or audio (e.g., MP3, OGG). It isnoted that when sharing a media object, the format in which they aredisplayed need not be identical; for example, a first user device 110may display a media object via an MPEG player and a second user device110 via a Flash player.

User devices 110 may include suitable hardware and software for carryingout the described functions; such as a processor connected to an inputdevice (e.g., a keyboard), a network interface, a memory, and a display.The memory may include logic or software operable with the device toperform some of the functions described herein. The device may beoperable to include a suitable interface for a messaging facility, suchas an email inbox, instant messaging (IM), short messaging service(SMS), multimedia messaging service (MMS), and the like. The device mayfurther be operable to display a web browser for accessing the Internetor user accounts, including webmail environments such as a Yahoo!® mailaccount or Hotmail® account, for example. User devices 110 may furtherinclude a wireless application protocol (WAP) feature, or other datacommunication protocol associated with user device 110 suitable forcommunication via network 112.

Network 112 may include a Wide Area Network (WAN) such as the Internet,a wireless network, such as a wireless gateway, e.g., a cellular,satellite, or other wireless network, a non-wireless network such as acable or fiber optic network, or a combination of wireless andnon-wireless systems. User devices 110 may communicate, in part or inwhole, via wireless or hardwired communications, such as Ethernet, IEEE802.11b wireless, or the like. Additionally, communication between userdevices 110 and a media source 120 may include (or access) variousservers or devices such as advertisement server 130, mail server (notshown), mobile server (not shown), and the like.

Media source 120, web server 122, and/or advertisement server 130 mayinclude logic for receiving user credentials, user input, contextinformation, media objects, and the like. To that end, media source 120,web server 122, and/or advertisement server 130 may utilize variouswireless or Web data interface techniques such as Common GatewayInterface (CGI) protocol and associated applications (or “scripts”),Java® “servlets”, e.g., Java® applications running on a wireless server,Web server, or the like to present information and receive input fromuser devices 110. Media source 120, web server 122, and/or advertisementserver 130, although described herein in the singular, may actuallycomprise plural servers, computer, devices, and the like, communicating(wired and/or wireless) and cooperating to perform some or all of thefunctions described herein. Additionally, media source 120, web server122, and/or advertisement server 130 may implemented in various fashionsand include various hardware, software, or firmware to carry out theexamples described herein.

Additionally, advertisement server 130 may operate to deliveradvertisements to users devices 110. For example, advertisement server130 may include logic for causing advertisements to be displayed with orassociated with delivered media content based on various factors such asthe media content accessed or delivered. In other examples, theadvertisements may alternatively or additionally be based on userprofile information associated with user devices 110 (e.g., accessed viauser devices 110 or web server 122). In yet other examples, theadvertisements may be randomly generated or associated with user devices110.

FIG. 2A schematically illustrates an exemplary interface 200 fordisplaying and controlling the synchronous delivery of a time-basedmedia object; and FIG. 2B illustrates a screen-shot of an exemplaryinterface 200 b for displaying and controlling a time-based media objectin conjunction with an instant messaging application (and may bereferenced in conjunction with FIG. 2A).

Interface 200 generally includes a display portion 202 for displaying amedia object, e.g., a video file. In other examples, a media object mayinclude an audio file such that display portion 202 is not used todisplay images associated with the received media object. In suchinstances, display portion 202 may include a status bar indicating thetime of an audio file as it plays, e.g., the time into or remaining inan audio file.

Interface 200 further includes controls 204 a-204 d for controlling thedisplay of a media object in response to user selection. Controls 204a-204 d may include controls for play, pause, fast-forward, and rewindas shown. Other controls are contemplated, such as a control forslow-motion, skip N seconds back/forward, stop, and so on.

Interface 200 further includes or interacts with communication logic forcommunicating user entered commands to other user devices sharing themedia object. For example, in response to a user selection of “pause,”interface 200 causes the command to be communicated to other userdevices sharing the media object. Further, a metric reference associatedwith the command for controlling the display of the media object (e.g.,a time or frame number) is communicated to other user devices forperforming the command in a synchronized manner. For example, continuingwith the exemplary “pause” command; interface 200 will communicate to asecond user device the command “pause,” as well as the time, e.g., at 10seconds (or at frame 550). The command along with the metric will resultin the other user devices performing the pause command at the specifiedtime. If the other user device(s) are beyond the specified metric thedisplay will seek or jump back to the specified time and pause; on theother hand, if the other user device(s) have not reached the specifiedmetric the display will continue and pause when the metric is reached.

Additionally, user interface 200 may include a communication portion240, e.g., which may display a conversation window associated with aninstant messaging application or other social or collaborativeapplication. In one example, a user may additionally or alternativelycontrol the display of the media object in display portion 202 via textentered commands. For example, a user entering the text “pause” or“play” may cause interface 200 to control the media object in displayportion 202 as well as communicate the command to other user devices incommunication therewith.

In other examples, communication portion 240 may include a Voice over IP(VoIP) interface, video phone, text messaging interface, a ‘smart’ DVRremote control, or other collaborative or social applications. Further,communication portion 240 and display portion 202 need not be includedwith the same window or be displayed at the same time with a userdevice.

With reference to FIG. 2B, an exemplary screen-shot of another interface200 b is illustrated. Interface 200 b is similar to that of interface200, including a display portion 202 b, communication portion 240 b andcontrols 204; accordingly, only differences will be addressed in detail.In this example, communication portion 240 b is implemented as aninstant messaging application, whereby users may exchange links to mediaobjects, media object files, text, voice, and so on. Further, asdescribed previously, users may enter commands, e.g., typing “pause” or“play” in lower window 242 b, the commands operable to control thedisplay of the media object in display portion 202 b as well as with aremote device/user.

Interface 200 b may further include various other applicationsassociated therewith from editing operations (e.g., clip, grab, cut,etc.) to communication operations (e.g., email, save, share, etc.)

FIG. 3 illustrates an exemplary signaling chart between user device Aand user device B for initiating a sharing session and exchanging acommand according to one example. The communications described may becarried out in an environment similar or dissimilar to that describedwith reference to FIG. 1.

In one example, software for facilitating media delivery andcommunications between user device A and user device B is received froma web server at 440 and 442. For example, software to be executedlocally with user devices A and B, such as a received plug-in or appletfor generating a user interface such as user interface 200 of FIG. 2A.Alternatively, a user may initiate a servlet through a web server forfacilitating communications between user device A and user device B.

User device A may thereafter communicate an indication to user device Bto share a media object at 450. For example, user device A maycommunicate a link to a media object accessible by user device B. Thelink may be to a media object of a remote media source (e.g., a mediaserver) or to a media object located with user device A. Additionally,user device A may communicate the media object itself to user device Binitially or in response to acceptance by a user of user device B.

In one example, user device A may send user device B a reference or fileassociated with the software for displaying an interface forfacilitating the synchronous media display between user devices A anduser B and a desired shared media object. Further, before or aftersending a reference or file for sharing, user devices A and B may open acommunication channel, e.g., similar to that for a conventional IMapplication.

In an example where the media object is located with a third party mediasource (e.g., a video and/or music sewer), user devices A and B requestand receive the media object at 452 a and 452 b respectively. In otherexamples, the media object may be transferred from one of user devices Aand B to the other (directly or via a remote server) such that both userdevices A and B have access to the same media object for synchronousdisplay. For example, the media object may be stored with user device A,which may include a personal entertainment device (such as a MP3 player,iPod™, etc.), a DVR (e.g., a TiVo™, etc.), and so on.

User device B thereafter sends user device A an indication at 454 thatuser device B is ready to play the media object. It will be understoodby those of ordinary skill in the art that user device B need notreceive the entire media object data prior to sending such anindication, but merely receive sufficient data to begin displaying themedia object.

In response to the indication at 454 from user device B, user device Asends a “play” command at 456 to user device B (when user device A isalso ready to play the media object). The command at 456 may furtherinclude a metric associated with the command, e.g., corresponding to thebegging of the media object. It is noted that in other examples, theready indication could initiate from user device A and/or the playcommand from user device B. Additionally, with multiple user devices,user device A may wait to issue the play command until all user devicesindicate they are ready.

Additionally, user device A may include a delay in playing the mediaobject locally (e.g., on user device A) to account for communicationtimes to user device B. For example, user device may include a standarddelay time or estimate a communication time-based on pinging device B toreduce differences in time created by the communication lag between userdevice A and user device B, thereby making the display of the mediaobject with user device A and user device B near-synchronous (e.g., adisplay offset of less than 1 second in one example, and less than 500ms in another example).

In response to a user entered command (e.g., selection of pause, rewindor skip-back N seconds), user device A causes communication of thecommand and associated metric (e.g., time, frame number, or the like) touser device B at 458. The communication of the command and the metricallows both user devices A and B to control the display of the mediaobject in a similar fashion and to remain in synchronization. Forexample, for a pause command delivered with a metric such as the time orframe number that the pause was made by user device A, allows userdevice B to pause the display of the media object at the same metricreference. Accordingly, the pause will occur at the same point of themedia object despite any drifting between users. Subsequentcommunication of commands, e.g., play, may occur at 460 and 462(similarly to that described at 454 and 456).

Another exemplary command includes a skip command (e.g., skipforward/backward N seconds). A skip command may be communicated as seekcommand along with the destination metric. For example, if user device Ais controlled by a user to skip back 10 seconds, user device A causescommunication of a seek command and a destination metric based on 10seconds prior to the current position of user device A. Thus, if thedevices are slightly out of synchronization they will skip or seek tothe same reference point in the media object (but not necessarily bothskipping the same amount). Again, user device A and B may communicatesimilarly to that described at 454 and 456 to synchronize playing afterthe seek command and will begin playing from the same point of the mediaobject.

Finally, one or both of user devices A and B may periodically update theother device with a status command and metric to determine if the mediaobject is displaying in synchronization on each device. For example, onedevice may drift out of synchronization over time and a status commandand metric may allow one or more of the devices to pause or skip thedisplay and re-synchronize the devices. Of course, absolutesynchronization is not necessary, and the system may set a desiredtolerance for near synchronized display, e.g., synchronized within lessthat 1 second or so.

FIGS. 4A and 4B illustrate exemplary methods for sharing content mediain a synchronous manner with respect to an initiating device and aninvited device. For example, at 400 a first user device may send a mediaobject (e.g., a media object file or a link/reference thereto) to atleast one second user device. The first user device then loads the mediaobject at 410 if remote or otherwise prepares the media object forplaying at 410. The media object plays when a ready or play command isreceived from the other user device(s) at 420 (and may also cause a playcommand at 430 depending on the particular implantation).

The second user device receives the media object or link thereto at 450and begins to load or access the media object at 460 (the second usermay further access or load an appropriate interface for displaying theshared media object). When the media object is sufficiently loaded forplaying the second device may signal an indication to the first user at470 and play the media object in response to a received play command at480. Again, in other examples, the second user device may wait for aready signal from the first user and issue the play command to the firstuser device.

FIG. 5 illustrates an exemplary operation for controlling shared mediaobjects between two or more users. Initially, a command is entered at500 with a first device. The first device causes the command andassociated metric to be communicated to the other device sharing themedia object at 510. The first user device may wait for anacknowledgement or ready indication at 520, the acknowledgement or readyindication indicating that the second user device is ready to performthe command entered at 500. For example, the first user device may waitfor an acknowledgement or ready indication for a skip forward andbackward command before beginning to play at the new time/frame of themedia object.

FIG. 6 illustrates an exemplary computing system 600 that may beemployed to implement processing functionality for various aspects ofthe invention (e.g., as a user device, web server, media source, etc.).Those skilled in the relevant art will also recognize how to implementthe invention using other computer systems or architectures. Computingsystem 600 may represent, for example, a user device such as a desktop,mobile phone, personal entertainment device, DVR, and so on, amainframe, server, or any other type of special or general purposecomputing device as may be desirable or appropriate for a givenapplication or environment. Computing system 600 can include one or moreprocessors, such as a processor 604. Processor 604 can be implementedusing a general or special purpose processing engine such as, forexample, a microprocessor, microcontroller or other control logic. Inthis example, processor 604 is connected to a bus 602 or othercommunication medium.

Computing system 600 can also include a main memory 608, preferablyrandom access memory (RAM) or other dynamic memory, for storinginformation and instructions to be executed by processor 604. Mainmemory 608 also may be used for storing temporary variables or otherintermediate information during execution of instructions to be executedby processor 604. Computing system 600 may likewise include a read onlymemory (“ROM”) or other static storage device coupled to bus 602 forstoring static information and instructions for processor 604.

The computing system 600 may also include information storage mechanism610, which may include, for example, a media drive 612 and a removablestorage interface 620. The media drive 612 may include a drive or othermechanism to support fixed or removable storage media, such as a harddisk drive, a floppy disk drive, a magnetic tape drive, an optical diskdrive, a CD or DVD drive (R or RW), or other removable or fixed mediadrive. Storage media 618 may include, for example, a hard disk, floppydisk, magnetic tape, optical disk, CD or DVD, or other fixed orremovable medium that is read by and written to by media drive 614. Asthese examples illustrate, the storage media 618 may include acomputer-readable storage medium having stored therein particularcomputer software or data.

In alternative embodiments, information storage mechanism 610 mayinclude other similar instrumentalities for allowing computer programsor other instructions or data to be loaded into computing system 600.Such instrumentalities may include, for example, a removable storageunit 622 and an interface 620, such as a program cartridge and cartridgeinterface, a removable memory (for example, a flash memory or otherremovable memory module) and memory slot, and other removable storageunits 622 and interfaces 620 that allow software and data to betransferred from the removable storage unit 618 to computing system 600.

Computing system 600 can also include a communications interface 624.Communications interface 624 can be used to allow software and data tobe transferred between computing system 600 and external devices.Examples of communications interface 624 can include a modem, a networkinterface (such as an Ethernet or other NIC card), a communications port(such as for example, a USB port), a PCMCIA slot and card, etc. Softwareand data transferred via communications interface 624 are in the form ofsignals which can be electronic, electromagnetic, optical, or othersignals capable of being received by communications interface 624. Thesesignals are provided to communications interface 624 via a channel 628.This channel 628 may carry signals and may be implemented using awireless medium, wire or cable, fiber optics, or other communicationsmedium. Some examples of a channel include a phone line, a cellularphone link, an RF link, a network interface, a local or wide areanetwork, and other communications channels.

In this document, the terms “computer program product” and“computer-readable medium” may be used generally to refer to media suchas, for example, memory 608, storage device 618, storage unit 622, orsignal(s) on channel 628. These and other forms of computer-readablemedia may be involved in providing one or more sequences of one or moreinstructions to processor 604 for execution. Such instructions,generally referred to as “computer program code” (which may be groupedin the form of computer programs or other groupings), when executed,enable the computing system 600 to perform features or functions ofembodiments of the present invention.

In an embodiment where the elements are implemented using software, thesoftware may be stored in a computer-readable medium and loaded intocomputing system 600 using, for example, removable storage drive 614,drive 612 or communications interface 624. The control logic (in thisexample, software instructions or computer program code), when executedby the processor 604, causes the processor 604 to perform the functionsof the invention as described herein.

It will be appreciated that, for clarity purposes, the above descriptionhas described embodiments of the invention with reference to differentfunctional units and processors. However, it will be apparent that anysuitable distribution of functionality between different functionalunits, processors or domains may be used without detracting from theinvention. For example, functionality illustrated to be performed byseparate processors or controllers may be performed by the sameprocessor or controller. Hence, references to specific functional unitsare only to be seen as references to suitable means for providing thedescribed functionality, rather than indicative of a strict logical orphysical structure or organization.

Although the present invention has been described in connection withsome embodiments, it is not intended to be limited to the specific formset forth herein. Rather, the scope of the present invention is limitedonly by the claims. Additionally, although a feature may appear to bedescribed in connection with particular embodiments, one skilled in theart would recognize that various features of the described embodimentsmay be combined in accordance with the invention.

Furthermore, although individually listed, a plurality of means,elements or method steps may be implemented by, for example, a singleunit or processor. Additionally, although individual features may beincluded in different claims, these may possibly be advantageouslycombined, and the inclusion in different claims does not imply that acombination of features is not feasible and/or advantageous. Also, theinclusion of a feature in one category of claims does not imply alimitation to this category, but rather the feature may be equallyapplicable to other claim categories, as appropriate.

Although the present invention has been described in connection withsome embodiments, it is not intended to be limited to the specific formset forth herein. Rather, the scope of the present invention is limitedonly by the claims. Additionally, although a feature may appear to bedescribed in connection with a particular embodiment, one skilled in theart would recognize that various features of the described embodimentsmay be combined in accordance with the invention. Moreover, aspects ofthe invention describe in connection with an embodiment may stand aloneas an invention.

Moreover, it will be appreciated that various modifications andalterations may be made by those skilled in the art without departingfrom the spirit and scope of the invention. The invention is not to belimited by the foregoing illustrative details, but is to be definedaccording to the claims.

What is claimed is:
 1. A method for delivery of media content to user devices, the method comprising: streaming media content to a first user device of a first user and to a second user device of a second user, the first user different from the second user; receiving, during the streaming, user content from the first user device; transmitting, during the streaming, the received user content to the second user device; receiving, during the streaming, a command from the first user device to control playback of the media content, the command being a command to pause the media content, to fast-forward the media content, or to jump to a particular segment of the media content; and synchronously controlling the streaming on the first user device and on the second user device in accordance with the command received from the first user device.
 2. The method of claim 1, wherein the media content is video content or audio content.
 3. The method of claim 1, wherein the user content comprises text, user voice content, an image, or a link to a media object.
 4. The method of claim 1, wherein the command is a command to play the media content, to pause the media content, or to fast-forward the media content.
 5. The method of claim 1, wherein the command is a command to jump to a particular segment of the media content.
 6. The method of claim 1, further comprising: receiving a ready indication from the second user device prior to streaming the media content to the first user device and the second user device.
 7. The method of claim 1, further comprising: receiving, during the streaming, a command from the second user device to control playback of the media content; and synchronously controlling the streaming on the first user device and on the second user device in accordance with the command received from the second user device.
 8. A method for delivery of media content to user devices, the method comprising: streaming media content to a first user device of a first user and to a second user device of a second user, the first user different from the second user; receiving, during the streaming, user content from the first user device; sending a link or a reference to the media content to the second user device, wherein the link or reference is a Uniform Resource Identifier (URI); transmitting, during the streaming, the received user content to the second user device; receiving, during the streaming, a command from the first user device to control playback of the media content; and synchronously controlling the streaming on the first user device and on the second user device in accordance with the command received from the first user device.
 9. The method of claim 1, further comprising: sending, to the second user device, a metric indicating a current position of the media content.
 10. A non-transitory, computer-readable medium for providing instructions that, when executed, enable a system to perform operations to deliver a media object to a first user device and a second user device, the operations comprising: streaming the media object to a first device and to a second device; during the streaming, receiving user content from the first device; during the streaming, transmitting the user content to the second device; during the streaming, receiving a command from the first device to control a playback of the media object, wherein the command pauses the media object, fast-forwards the media object, or jumps to a segment of the media object; and synchronously controlling the streaming on the first device and on the second device, at least in part based on the command from the first device.
 11. The medium of claim 10, wherein the media object is a video file or an audio file.
 12. The medium of claim 10, wherein the user content is text, voice content, an image, or a link to the media object.
 13. The medium of claim 10, wherein the command plays the media object, pauses the media object, or fast-forwards the media object.
 14. The medium of claim 10, wherein the command jumps to a segment of the media object.
 15. The medium of claim 10, wherein the streaming is performed, at least in part based on a reception of a ready command from the second device.
 16. The medium of claim 10, the operations further comprising: during the streaming, receiving a command from the second device that controls a playback of the media object; and synchronously controlling the streaming on the first device and on the second device, at least in part based on the command from the second device.
 17. The medium of claim 10, the operations further comprising: sending a link or a reference to the media object to the second device, the link or reference being a Uniform Resource Identifier (URI).
 18. The medium of claim 10, further comprising: sending, to the second device, a metric indicating a frame number or time interval of the media object.
 19. An apparatus, comprising: a communications interface that streams a time-based media object to a first personal device and to a second personal device, wherein the communications interface receives user content from the first personal device and transmits the user content to the second personal device, during the streaming, and the communications interface receives a command from the first personal device for controlling a playback of the time-based media object, during the streaming, the command to pause the time-based media object, to fast-forward the time-based media object, or to skip to a reference point of the time-based media object; and a processor configured to synchronously control the streaming on the first personal device and on the second personal device according to the command from the first personal device.
 20. The apparatus of claim 19, wherein the time-based media object is defined by video content or audio content.
 21. The apparatus of claim 19, wherein the user content is defined by text, voice content, an image, or a link to the time-based media object.
 22. The apparatus of claim 19, wherein the command is to play the time-based media object, to pause the time-based media object, or to fast-forward the time-based media object.
 23. The apparatus of claim 19, wherein the command is to skip to a reference point of the time-based media object.
 24. The apparatus of claim 19, wherein, in response to a reception of a ready signal from the second personal device, the communications interface streams the time-based media object to the first personal device and the second personal device.
 25. The apparatus of claim 19, wherein the communications interface receives a command from the second personal device, during the streaming, to control a playback of the time-based media object; and the processor further is configured to synchronously control the streaming on the first personal device and on the second personal device according to the command from the second personal device.
 26. The apparatus of claim 19, wherein the communications interface sends a link or a reference to the time-based media object to the second personal device, the link or reference defined by a Uniform Resource Identifier (URI).
 27. The apparatus of claim 19, wherein the communications interface sends a metric to the second personal device, the metric indicating a time or frame reference of the time-based media object. 